package day06;

public class AnoymousInnerDetail {
    public static void main(String[] args) {
//外部其他类不能访问匿名内部类（因为匿名内部类就是一个小小的成员变量 你怎么可能去使用一个方法里面的变量那）
        //如果外部类和匿名内部类成员重名时，外部类访问的话，默认遵循就近原则，如果想访问外部类成员需要采用类.this.属性
    }
}
class Outer05{
    private  int n1=100;
    public void f1(){
       person p = new person(){
            @Override
            public void hi() {
                System.out.println("匿名内部类将方法重写");
                n1=20;//可以直接对外部类的属性进行修改
            }

        };
       new person(){
           @Override
           public void hi() {
               System.out.println("匿名内部类又一次重写了hi方法");
           }
       }.hi();//还可以就是说 我们直接创建这个对象 然后返回的值采取方法进行操作
       p.hi();//这里编译看左边 就是我们调用hi 但是实际运行的时候 我们会去看右边的的运行 因为右边的操作是重写了的 所以我们会调用右边的
    }
}



class person{
    public void hi(){
        System.out.println("hi");
    }
}

